local auto_commit = {}

local function is_git_repo()
  -- 检查当前目录是否是 Git 仓库
  return vim.fn.isdirectory(".git") == 1
end

local function has_uncommitted_changes()
  -- 检查是否有未提交的更改
  local status_output = vim.fn.systemlist("git status --porcelain")
  return #status_output > 0
end

local function commit_changes()
  local commit_msg = "Auto-commit from Neovim: " .. os.date("%Y-%m-%d %H:%M:%S")
  
  -- 暂存所有更改
  vim.fn.system("git add .")
  
  -- 提交更改
  local commit_command = string.format('git commit -m "%s"', commit_msg)
  local commit_output = vim.fn.system(commit_command)
  
  print("\n" .. commit_output) -- 在命令行窗口打印提交信息
  local push_output=vim.fn.system("git push")
-- 检查推送是否成功
  if vim.v.shell_error == 0 then
    print("自动推送成功！")
  else
    print("自动推送失败！请手动检查。")
    print("错误信息：\n" .. push_output)
  end
end

-- 创建一个自动命令组，防止重复定义
function auto_commit.setup()
  local augroup = vim.api.nvim_create_augroup("AutoCommit", { clear = true })
  -- 定义自动命令
  vim.api.nvim_create_autocmd("VimLeavePre", {
    group = augroup,
    callback = function()
      -- 只在 Git 仓库中执行
      if not is_git_repo() then
        return
      end

      -- 检查是否有未提交的更改
      if has_uncommitted_changes() then
        print("\n发现未提交的更改，正在自动提交...")
        commit_changes()
        print("自动提交完成！")
      end
    end,
  })
end
return auto_commit
